Many desktop and server computer systems utilize a basic input/output system (“BIOS”) to control various aspects of the computer system. In particular, the BIOS is utilized to initialize the various hardware components within the computer system, to provide an interface between an operating system executing on the computer system and the hardware, and to perform other various functions. In many computer systems, the BIOS also provides a user interface for configuring various aspects of the computer hardware. For instance, a setup menu may be provided by the BIOS in response to the selection of a predefined keyboard key by a user. Through the setup menu, a user can define various configuration options and performance features of the computer system.
One group of variables typically configurable through the setup menu of a computer system is the boot order of mass storage devices attached to the computer system. In particular, because modern computer systems may include multiple devices capable of storing an operating system from which the computer system may be booted, a user is permitted to select the order in which an attempt is made to boot the computer from the various devices. For instance, a user may specify that an attempt be made to boot the computer system from a floppy disk drive prior to attempting to boot the computer system from a hard disk drive. If the computer cannot be booted from the floppy disk drive, an attempt will be made to boot the computer from the hard disk drive. Any number of such devices may be specified in the boot order.
In order to maintain the boot priority of the computer system permanently, the boot priority of each drive is stored in a non-volatile memory location that uniquely corresponds to the drive. This correspondence between each mass storage device in the system and the unique memory location in the non-volatile memory is established on an order of discovery basis. As each mass storage device is detected by the BIOS, it is matched with the next available memory location. As long as the configuration of the mass storage devices within the computer is static, each mass storage device is matched to the same memory location every time the system is booted.
Although the system described above for storing the boot order of a computer system has been widely used, this system suffers from at least one flaw. This flaw occurs when the configuration of the mass storage devices is changed, for example, by adding or removing a mass storage device from the computer system. When a mass storage device is added or removed from the system, the order of discovery of some or all of the mass storage devices in the system may change. Accordingly, a mass storage device may no longer be matched to the same memory location in the non-volatile memory as before. Thus, the boot priority of the mass storage device is lost and the desired boot order of the mass storage devices is no longer in tact. In this event, the user is forced to enter the setup facility provided by the BIOS to reestablish the desired boot order of the mass storage devices. This can be confusing and frustrating for a user that expects a consistent boot priority even after adding or removing mass storage devices from the computer system.
It is with respect to these considerations and others that the various embodiments of the present invention have been made.